<!doctype html>
<html lang=ru id=faq>

<!-- If you make edits to any FAQ documents, please start each sentence
     on a new line, and try to keep the general formatting consistent
     with the rest of the pages -->

<title>OpenBSD FAQ: Управление клавиатурой и дисплеем</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="../openbsd.css">
<link rel="canonical" href="https://www.openbsd.org/faq/faq7.html">

<h2 id=OpenBSD>
<a href="../index.html">
<i>Open</i><b>BSD</b></a>
FAQ - Управление клавиатурой и дисплеем
<small>
<a href="index.html">[FAQ - На главную]</a>
</small>
</h2>
<hr>

<ul>
<li><a href="#Consoles"       >Работа в консоли</a>
  <ul>
  <li><a href="#Keyboard"     >Переназначить клавиши на клавиатуре</a>
  <li><a href="#ConsoleMouse" >Поддержка мыши в консоли</a>
  <li><a href="#SwitchConsole">Переключение между консолями</a>
  </ul>
<li><a href="#VGAConsoles"    >Консоли на VGA Hardware</a>
  <ul>
  <li><a href="#Scrollback"   >Буфер прокрутки</a>
  <li><a href="#AddConsole"   >Добавление виртуальных консолей</a>
  <li><a href="#Size80x50"    >Изменение шрифтов и разрешения консоли</a>
  </ul>
<li><a href="#Blanker"        >Отчистка неактивной консоли</a>
<li><a href="#SerCon"         >Последовательный порт для доступа к консоли</a>
</ul>
<hr>

<h2 id="Consoles">Работа в консоли</h2>

<h3 id="Keyboard">Переназначить клавиши на клавиатуре</h3>

Утилита <a href="https://man.openbsd.org/kbd">kbd(8)</a> может быть
использована для изменений кодировки клавиатуры.
Большинством настроек клавиатуры можно управлять при помоши утилиты
<a href="https://man.openbsd.org/wsconsctl">wsconsctl(8)</a>.
К примеру, чтобы переназначить клавиши (to change keymappings) при помощи
<a href="https://man.openbsd.org/wsconsctl">wsconsctl(8)</a>,
сделайте следующее:

<pre class="cmdbox">
# <b>wsconsctl keyboard.encoding=uk</b>
</pre>

Переназначить <code>[Caps Lock]</code> на
<code>[Control L]</code>, левую клавишу control:

<pre class="cmdbox">
# <b>wsconsctl keyboard.map+="keysym Caps_Lock = Control_L"</b>
</pre>

Чтобы настройки сохранились, используйте файл
<a href="https://man.openbsd.org/wsconsctl.conf">wsconsctl.conf(5)</a>.

<h3 id="ConsoleMouse">Поддержка мыши в консоли</h3>

Для платформ <a href="https://www.openbsd.org/alpha.html">alpha</a>,
<a href="https://www.openbsd.org/amd64.html">amd64</a> и
<a href="https://www.openbsd.org/i386.html">i386</a> OpenBSD предоставляет
<a href="https://man.openbsd.org/wsmoused">wsmoused(8)</a>.
Его можно включить при помощи утилиты <a href="https://man.openbsd.org/rcctl">rcctl(8)</a>,
<a href="faq10.html#rc">описанной в FAQ</a>.


<h3 id="SwitchConsole">Переключение между консолями</h3>

Для большинства alpha, amd64 и i386 систем OpenBSD по умолчанию
предоставляет шесть виртуальных терминалов: от <code>/dev/ttyC0</code>
до <code>/dev/ttyC5</code>.
Вы можете переключаться между ними, используя <code>[CTRL]+[ALT]</code>
вместе с <code>[F1]</code> до <code>[F6]</code>.
Виртуальный терминал <code>ttyC4</code> зарезервирован для использования
<a href="faq11.html">X Window system</a>.

<h2 id="VGAConsoles">Консоли на VGA Hardware</h2>

<b>Внимание:</b> в этом разделе речь идет о возможностях драйвера
<a href="https://man.openbsd.org/vga">vga(4)</a>. Они поддерживаются
не всеми видеокартами. Приведенные ниже инструкции
<b>не будут работать на современном железе</b>, которое использует
драйвер <a href="https://man.openbsd.org/drm">drm(4)</a>.

<h3 id="Scrollback">Буфер прокрутки</h3>

На некоторых платформах OpenBSD предоставляет буфер прокрутки экрана
консоли (console scrollback buffer). Он позволяет вам вернуться к
информации, которую уже не видно на экране из-за появления новой.
Для перемещения вверх и вниз используйте комбинации клавиш
<code>[SHIFT]+[PGUP]</code> и <code>[SHIFT]+[PGDN]</code>.
Количество экранов, помещающихся в буфера прокрутки - 8. 
Переключение консолей очистит буфер прокрутки.
Из-за ограничений на используемое место,  ядро, используемое
для установки системы, не поддерживает возможности прокрутки.

<h3 id="AddConsole">Добавление виртуальных консолей</h3>

Если вы хотите, чтобы виртуальных консолей было больше, используйте команду
<a href="https://man.openbsd.org/wsconscfg">wsconscfg(8)</a> для создания
новых экранов для <code>ttyC6</code>, <code>ttyC7</code> и т.д. Например:

<pre class="cmdbox">
# <b>wsconscfg -t 80x25 6</b>       # this will not work on systems using drm(4)
</pre>

Это создаст виртуальный терминал для <code>ttyC6</code>, доступ к которому
будет осуществляться при помощи <code>[CTRL]+[ALT]+[F7]</code>.
Чтобы получить приглашение <code>login:</code> на только что созданной
виртуальной консоли, вам нужно включить его как <code>on</code> в
<a href="https://man.openbsd.org/ttys">ttys(5)</a>,
и либо перезагрузить <a href="https://man.openbsd.org/init">init(8)</a>,
либо отправить ему сигнал HUP при помощи
<a href="https://man.openbsd.org/kill">kill(1)</a>.
Добавьте эту команду в <a href="https://man.openbsd.org/rc.local">rc.local(8)</a>,
если вам потребуется дополнительная консоль при следующей загрузке компьютера.

<h3 id="Size80x50">Изменение шрифтов и разрешения консоли</h3>

Многие VGA видеокарты на alpha, amd64 и i386 способны отображать 50 строк
текста в высоком разрешении вместо обычных 25.
Стандартный 80x25 экран использует шрифт 8x16 пикселей.
Чтобы удвоить количество строк, мы сначала загружаем шрифт 8x8 пикселей при
помощи <a href="https://man.openbsd.org/wsfontload">wsfontload(8)</a>.
Затем мы удаляем и создаем заново виртуальную консоль с нужным разрешением
экрана, используя  <a href="https://man.openbsd.org/wsconscfg">wsconscfg(8)</a>.
Это можно сделать автоматически при загрузке, добавив следующие команды в
конец <a href="https://man.openbsd.org/rc.local">rc.local(8)</a> скрипта:

<pre class="cmdbox">
wsfontload -h 8 -e ibm /usr/share/misc/pcvtfonts/vt220l.808	# load 8x8 font
wsconscfg -dF 5			# delete screen 5 accessed by [CTRL]+[ALT]+[F6]
wsconscfg -t 80x50 5		# add screen 5 with 50 lines of 80 characters
</pre>

Если вы хотите изменить другие screens, просто повторите шаги удаления и
добавления экрана для других экранов. Невозможно изменить разрешение основного
консольного устройства <code>ttyC0</code>, доступ к которому осуществляется при
помощью <code>[CTRL]+[ALT]+[F1]</code>. Избегайте изменения экрана 4, который
используется X в качестве графического экрана.

<h2 id="Blanker">Отчистка неактивной консоли</h2>

Если вы хотите, чтобы экран отключался после определенного периода неактивности
консоли (без использования X), можете установить следующие параметры
<a href="https://man.openbsd.org/wscons">wscons(4)</a>:

<ul>
  <li><b><code>display.screen_off</code></b>
    определяет время в тысячных долях секунды, после которых экран будет погашен.
  <li><b><code>display.kbdact</code></b>
    установка этого параметра как <code>on</code>, делает возможным пробудить
    экран при любой активности с клавиатуры.
  <li><b><code>display.msact</code></b>
    установка этого параметра как <code>on</code>, приведет к тому, что экран
    будет пробуждаться при любой активности <a href="#ConsoleMouse" >конольной мыши</a>.
  <li><b><code>display.outact</code></b>
    установка этого парамерта как <code>on</code> обозначает, что экран будет
    просыпаться, если на экран будет выведенно что-то новое.
  <li><b><code>display.vblank</code></b>
    установка этого параметра как <code>on</code> отключает вертикальное обновление
    экрана.
    Это приведет к тому, что многие мониторы перейдут в режим энергосбережения.
</ul>

Вы можете установить эти переменные в командной строке, используя для этого
<a href="https://man.openbsd.org/wsconsctl">wsconsctl(8)</a>:

<pre class="cmdbox">
# <b>wsconsctl display.screen_off=60000</b>
display.screen_off -> 60000
</pre>

или установить их перманентно (изменения вступят в силу после перезагрузки),
отредактировав
<a href="https://man.openbsd.org/wsconsctl.conf">wsconsctl.conf(5)</a>.
Отключение экрана активируется лишь в том случае, если одна из двух переменных
<code>display.kbdact</code> или <code>display.outact</code> установленна как
<code>on</code>. Еще одно замечание - одна из них должна быть <code>off</code>.

<h2 id="SerCon">Последовательный порт для доступа к консоли</h2>

OpenBSD поддерживает работу консоли через последовательный порт на большенстве
платформ, однако существуют различия в ее работе на разных платфомах.
Помимо того, что пользователи могут таким образом входить в систему,
они также могут быть использованы для записи вывода с консоли.

<p>
Использование полноценной последовательной консоли в OpenBSD состоит
из двух частей:

<ul>
  <li>Позволяет использовать последовательный порт в качестве интерактивного
      терминала, чтобы пользователь мог войти в него при работе в
      многопользовательском режиме.
  <li>Можно настроить OpenBSD для использования последовательного порта в
      качестве консоли лишь для мониторинга состояния системы и
      однопользовательского режима. Эта часть сильно зависит от платформы.
</ul>

<h3 id="SerContty">Настройка возможности входа в систему через <code>/etc/ttys</code></h3>

Поведением терминалов в OpenBSD контролирется файлом
<a href="https://man.openbsd.org/ttys">ttys(5)</a>. Для того, чтобы появилось
приглашение для входа в систему <code>login:</code>, его необходимо включить
в <code>/etc/ttys</code>. Последовательный терминал (serial terminal) по
умолчанию отключен на платформах, к которым обычно подключены клавиатура и
экран. Мы будем использовать платформу amd64 в качестве примера.
В этом случае вы должны изменить строку:

<pre class="cmdbox">
tty00   "/usr/libexec/getty std.9600"   unknown off
</pre>

таким образом:

<pre class="cmdbox">
tty00   "/usr/libexec/getty std.9600"   vt220   on secure
</pre>

Здесь <code>tty00</code> - это последовательный порт, который мы используем
в качестве консоли, а <code>vt220</code> - запись в
<a href="https://man.openbsd.org/termcap.5">termcap(5)</a>, соответствующая
вашему терминалу. Другие возможные варианты могут включать <code>vt100</code>,
<code>xterm</code> и т.д. Параметр <code>on</code> включает приглашение
для входа в систему, активируя
<a href="https://man.openbsd.org/getty">getty(8)</a>
для этого последовательного порта. Параметр <code>secure</code> разрешает
вход в систему пользователю <code>root</code> на этой консоли.
И наконец, параметр <code>9600</code> - это скорость для этого терминала.

<p>
Обратите внимание, что вы можете использовать последовательную консоль
(serial console) для установки системы без выполнения этого шага, так как
система работает в однопользовательском режиме и не использует
<code>getty</code> для входа в систему.

<p>
На некоторых платформах и некоторых конфигурациях вы должны перевести
систему в однопользовательский режим, чтобы сделать это изменение, если
у вас есть последовательная консоль.

<h3>amd64 и i386</h3>

Для настройки процесса загрузки таким образом, чтобы использовался
последовательный порт в качестве консоли, файл
<a href="https://man.openbsd.org/amd64/boot.conf">boot.conf(5)</a>
должен содержать строку:

<pre class="cmdbox">
set tty com0
</pre>

Этот файл помещается на ваш загрузочный диск, который также может быть
вашим install media. Используйте параметр <code>stty</code>, если вам
нужна скорость передачи данных, отличная от 9600bps.

<p>
Некоторые системы могут работать без видеокарты. Некоторые считают это
условием ошибки. Другие способны перенаправлять все действия клавиатуры
и экрана BIOS на последовательный порт с помощью параметра конфигурации,
поэтому можно полностью обслуживать машину через последовательный порт.
Ваши результаты могут отличаться.
При использовании этой функции некоторые реализации BIOS могут мешать
загрузчику видеть последовательный порт, поэтому ядро не сможет его
использовать.
Может быть опция BIOS "Continue Console Redirection after POST"
(«Продолжить перенаправление консоли после POST»). Она должна быть
выключена, т.е. установлена в OFF, чтобы загрузчик и ядро могли
создать и работать со своими собственными консолями.

<p>
Чтобы испрользовать машину в многопользовательском режиме, вам
понадобится отредактировать файл <code>/etc/ttys</code> как
<a href="#SerContty">рассказывалось выше</a>.

<h3>sparc64</h3>

Эти машины специально спроектированы таким образом, чтобы с ними легко
можно было работать при помощи последовательной консоли. Просто отключите
клавиатуру, и система автоматически будет использовать проследовательный порт.

<p>
В некоторых системах последовательные порты распознаются системой как
<code>ttya</code>, <code>ttyb</code>, <code>ttyh0</code> или <code>ttyh1</code>.
Нет необходимости трогать <code>/etc/ttys</code> для использования
последовательной консоли в многопользовательском режиме.

<p>
Некоторые системы sparc64 интерпретируют сигнал BREAK на консольном порту
так же, как команда STOP-A. Это возвращает систему обратно к приглашению
Forth, останавливая в этот момент любое приложение и операционную систему.
Это удобно, если подобное происходит по желанию пользователя, но, к
сожалению, некоторые последовательные терминалы и RS-232 switching devices
посылают что-то, что компьютер интерпретирует как сигнал об остановке машины.
Проверьте это, прежде чем использовать на критически важных машинах.

<p>
Если клавиатура и монитор подключены, вы все равно можете принудительно
использовать последовательную консоль, используя следующие команды в
<code>ok</code> prompt:

<pre class="cmdbox">
ok <b>setenv input-device ttya</b>
ok <b>setenv output-device ttya</b>
ok <b>reset</b>
</pre>

Если <code>ttyC0</code> активирован в <code>/etc/ttys</code>, как
<a href="#SerContty">описано выше</a>, вы можете использовать клавиатуру
и монитор в X.

<h3>macppc</h3>

Машины macppc сконфигурированы таким образом, что для работы с последовательной
консоли используется OpenFirmware. Используйте команды:

<pre class="cmdbox">
ok <b>setenv output-device scca</b>
ok <b>setenv input-device scca</b>
ok <b>reset-all</b>
</pre>

Установите последовательную консоль на 57600bps, 8N1.

<p>
К сожалению, последовательная консоль на большинстве MacPPC напрямую невозможна.
Хотя большинство этих машин имеют serial hardware, оно недоступно из вне
(it isn't accessible outside the machine). К счастью, несколько компаний
предлагают дополнительные устройства для нескольких моделей Macintosh,
которые сделают этот порт доступным для использования через последовательную
консоль.

<p>
Вы должны использовать параметр <code>on</code> для <code>tty00</code>
в <code>/etc/ttys</code> и установить скорость 57600 вместо 9600 (значение
по умолчанию), как описано <a href="#SerContty">выше</a> в однопользовательском
режиме, прежде чем перезагрузиться в многопользовательском режиме и иметь
возможность работать с последовательной консолью.

<h3>Что делать при I/O ошибках во время работы с tty</h3>

Вам необходимо использовать <code>/dev/cuaXX</code> для соединений,
инициированных из OpenBSD. Устройства <code>/dev/ttyXX</code> предназначены
только для использования с терминалами или по телефонной линии.
Обратитесь к руководству <a href="https://man.openbsd.org/cua">cua(4)</a>
для получения более подробной информации.
